package com.huarun.redis;

public interface RedisService {
	/**
	 * 功能说明：将对象保存到redis里面
	 * @param keyPrefix key前缀
	 * @param obj 对象
	 * @param key key后缀
	 * @param cacheTime 缓存时间(单位秒)
	 * @return true 保存成功，false失败
	 */
	public boolean saveObject(RedisKeyPrefix keyPrefix,String key,String obj,int cacheTime);
	
	
	/**
	 * 功能说明：将对象保存到redis里面
	 * @param keyPrefix key前缀
	 * @param obj 对象
	 * @param key key后缀
	 * @param cacheTime 缓存时间(单位秒)
	 * @return true 保存成功，false失败
	 */
	public boolean saveObject(RedisKeyPrefix keyPrefix,String key,Object obj,int cacheTime);

	/**
	 * 功能说明：通过key获取保存到redis里面的值
	 * @param keyPrefix key前缀
	 * @param key key后缀
	 * @return 返回null 代表没数据
	 */
	public String getValue(RedisKeyPrefix keyPrefix,String key);
	
	/**
	 * 功能说明：通过key删除redis里面的值
	 * @param keyPrefix key前缀
	 * @param key key后缀
	 * @return 影响数据的总条数，0代码没有修改
	 */
	public long deleteValue(RedisKeyPrefix keyPrefix,String key);

	
	/**
	 * 功能说明：拼接cachekey
	 * @param keyPrefix key前缀
	 * @param key  key后缀
	 * @return
	 */
	default String getCacheKey(RedisKeyPrefix keyPrefix,String key) {
		return keyPrefix.getKey()+"_"+key;
	}

	/**
	 * 功能说明：通过key获取保存到redis里面的值,并重置过期时间
	 * @param keyPrefix key前缀
	 * @param key key后缀
	 * @return 返回null 代表没数据
	 */
	public String getValueAddCacheTime(RedisKeyPrefix keyPrefix, String key,int expireTime);


	/**
	 * 功能说明：通过key删除redis里面的值
	 * @param keyPrefix key前缀
	 * @param key key后缀
	 * @return 影响数据的总条数，0代码没有修改
	 */
	long deleteObj(RedisKeyPrefix keyPrefix, String key);

}
